let data = {}
let name = "zhangsan"

/**
 * Object.defineProperty基本用法
 * 给一个对象定义一个属性叫name,可以监听get和set,
 * 这个属性的赋值和获取都变成了函数
 */

Object.defineProperty(data,"name",{
  get:function(){
    console.log('get')
    return name
  },
  set:function(newVal){
    console.log('set')
    name = newVal
  }
})
//获取name属性触发get方法
console.log(data.name);
//修改name属性触发set方法
data.name = 'lisi'


// 监听对象，监听数组，负责对象，深度监听，缺点